package cn.iocoder.yudao.module.system.service.hybase;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import com.trs.hybase.client.TRSConnection;
import com.trs.hybase.client.TRSInputRecord;
import com.trs.hybase.client.params.SearchParams;

import java.io.File;
import java.util.List;
import java.util.Map;

/**
 * 海贝
 */
public interface HyBaseService {

    /**
     * 连接
     * @return
     */
    TRSConnection connection();

    void close(TRSConnection connection);


    void insert(String tableName, Map<String,Object> params);

    void insert(String tableName, TRSInputRecord record);

    void insert(String tableName, List<Map<String,Object>> data);

    void insertBatch(String tableName, List<TRSInputRecord> trsInputRecords);

    void update(String tableName,TRSInputRecord inputRecord);

    void update(String tableName, Map<String,Object> params);

    void updateBatch(String tableName, List<TRSInputRecord> trsInputRecords);

    boolean createTableRes(String tableName, List<String> list);

    boolean deleteTable(String tableName);

    boolean createTable(String tableName, List<Map<String,Object>> fieldDOList);

    long executeDeleteQuery(String tableName, Long id);

    String extractImageFeatures(File file);

    /**
     * 分类检索
     * @param strSources 检索目标数据库名称列表。多个对象名间以半角分号、逗号分隔，不能为空。
     * @param query 检索表达式，如果要在表达式中指定检索字段 ，格式为“字段名:检索条件”，为空表示无条件检索
     * @param defaultColumn 默认检索字段
     * @param categoryColumn 分类字段，不能为空
     * @param topNum 返回类别统计数最多的前多少个类别统计 ，如果为 Long.MAX_VALUE，返回所有统计，实际结果可能小于 topNum
     * @return
     */
    Map<String, Long> categoryQuery(String strSources, String query, String defaultColumn, String categoryColumn, long topNum);

    PageResult<Map<String,Object>> select(String tableName, String where, Long start, Long num, SearchParams searchParams);

    void updateHybaseById(String tableName, Long id, Map<String, Object> map);
}
